package com.demandbreakdown.xiyun.service;

import com.demandbreakdown.xiyun.model.dto.auth.ForgotPasswordDTO;
import com.demandbreakdown.xiyun.model.dto.auth.SendCaptchaDTO;
import com.demandbreakdown.xiyun.model.dto.user.UserLoginDTO;
import com.demandbreakdown.xiyun.model.dto.user.UserRegisterDTO;
import com.demandbreakdown.xiyun.model.vo.auth.LoginVO;

/**
 * 认证授权服务接口
 *
 * @author poxz
 */
public interface AuthService {

    /**
     * 发送邮箱验证码
     *
     * @param sendCaptchaDTO 验证码发送参数
     */
    void sendCaptcha(SendCaptchaDTO sendCaptchaDTO);

    /**
     * 用户注册
     *
     * @param userRegisterDTO 用户注册参数
     * @return LoginVO
     */
    LoginVO register(UserRegisterDTO userRegisterDTO);

    /**
     * 用户登录
     *
     * @param userLoginDTO 用户登录参数
     * @return LoginVO
     */
    LoginVO login(UserLoginDTO userLoginDTO);

    /**
     * 退出登录
     *
     * @param token 访问令牌
     */
    void logout(String token);

    /**
     * 忘记密码，通过验证码重置密码
     *
     * @param forgotPasswordDTO 忘记密码参数
     */
    void forgotPassword(ForgotPasswordDTO forgotPasswordDTO);
}
